package com.hiwan.system.dao.parameter;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.framework.dao.ServiceUtilDao;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Repository;

import com.hiwan.platform.util.StackTraceUtil;
import com.hiwan.system.pojo.SysDictEntry;
import com.hiwan.system.pojo.ParameterInfo;

@Repository
public class ParameterDao extends ServiceUtilDao {
	// private static final String paramSqlPath = "com.hiwan.system.mapper.parameter";
	private static final String dictSqlPath = "com.hiwan.system.mapper.dict";

	/**
	 * 查询列表
	 * @param dictType 字典类型
	 * @param orgId
	 * @param langCode
	 * @param paramType 参数类型
	 * @return
	 */
	public List<SysDictEntry> selectDictEntry(String dictType, String orgId, String langCode, String dictCode) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("dictType", dictType);
		map.put("orgId", orgId);
		map.put("langCode", langCode);
		map.put("dictCode", dictCode);
		return selectList(dictSqlPath, "selectDictEntry", map, SysDictEntry.class);
	}

	/**
	 * 获取参数字段显示名称
	 * @param dictType
	 * @param orgId
	 * @param langCode
	 * @param paramType
	 * @return
	 */
	public List<SysDictEntry> selectDictEntryParam(String dictType, String orgId, String langCode, String paramType) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("dictType", dictType);
		map.put("orgId", orgId);
		map.put("langCode", langCode);
		map.put("paramType", paramType);
		return selectList(dictSqlPath, "selectDictEntryParam", map, SysDictEntry.class);
	}

	/**
	 * 查询小类参数列表
	 * @param paramType 参数类型
	 * @return
	 */
	public List<ParameterInfo> selectSubParamList(String paramType) {
		return selectList("selectSubParamList", paramType, ParameterInfo.class);
	}

	/**
	 * 查询参数详细信息
	 * @param paramType 参数标识
	 * @param orgId 机构号
	 * @param paramKey 主键
	 * @return
	 */
	public ParameterInfo selectParamInfo(String paramType, String orgId, String paramKey) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("paramType", paramType);
		map.put("orgId", orgId);
		map.put("paramKey", paramKey);
		return selectOne("selectParamInfo", map, ParameterInfo.class);
	}

	// 添加参数信息
	public int insertParamInfo(ParameterInfo paramInfo) {
		try {
			return insert("insertParamInfo", paramInfo);
		} catch (DataIntegrityViolationException e) {
			logger.error(StackTraceUtil.getStackTrace(e));
			return -1;// 主键冲突
		}
	}

	// 修改参数信息
	public int updateParamInfo(ParameterInfo paramInfo) {
		return update("updateParamInfo", paramInfo);
	}

	/**
	 * 删除参数信息
	 * @param paramType 参数标识
	 * @param orgId 机构号
	 * @param paramKey 主键
	 * @return
	 */
	public int deleteParamInfo(String paramType, String orgId, String paramKey) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("paramType", paramType);
		map.put("orgId", orgId);
		map.put("paramKey", paramKey);
		return delete("deleteParamInfo", map);
	}
	/**
	 * 查询客户维护参数
	 * @param sysParameterInfo
	 * @return
	 */
	public List<ParameterInfo> selectKhwh(ParameterInfo sysParameterInfo){
		return selectList("selectKhwh",  sysParameterInfo, ParameterInfo.class);
	}
}
